Encontré esta publicación: https://github.com/angular/universal/issues/272 donde el usuario @gdi2290 explica cómo agregar esa funcionalidad
Pero me sale un error en mi código:
/home/master/Documents/rs-dash/dist/server/server.bundle.js:317 throw new Error("Falló la compilación del módulo: Error: /home/master/Documents/rs-dash/src/app/app. node.module.ts (97,48): la propiedad 'inyector' no existe en el tipo 'ApplicationRef'.)\n/home/master/Documents/rs-dash/src/app/app.node.module.ts ( 97,61): No se puede encontrar el nombre 'SuServicioConEstado'.)\n en _checkDiagnostics (/home/master/Documents/universal-cli/packages/@ngtools/webpack/src/loader.ts:115:15)\n en / home/master/Documentos/universal-cli/packages/@ngtools/webpack/src/loader.ts:140:17"); ^
Agregué en el módulo de nodo:
constructor(public appRef: ApplicationRef) { } // lives in your node main module universalDoDehydrate(universalCache) { var yourServiceWithState = this.appRef.injector.get(YourServiceWithState) var key = 'yourServiceWithState._state' universalCache[key] = yourServiceWithState._state.justOneProp }y en el módulo del navegador:
constructor(public appRef: ApplicationRef) { // lives in your browser main module var key = 'yourServiceWithState._state' if (UNIVERSAL_CACHE[key]) { localStorage[key] = UNIVERSAL_CACHE[key] } } ¿Alguien sabe cuál es el problema, estoy usando universal-cli ?
Tuve el problema y desarrollé una solución de caché y servidor para él (4 paquetes separados para operaciones de caché tanto en plataformas de servidor como de navegador).
Verifique la implementación en ng-seed/universal . Todo se maneja a través del @Cached(...) en el método/cargador/etc. que desea que se almacene en caché. Además, existe la posibilidad de utilizar métodos de almacenamiento en caché ( has , get , set ) utilizando la API de almacenamiento en caché.
Estos son los paquetes que necesita usar para el almacenamiento en caché del lado del servidor: